package ofertas;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.util.ArrayList;
import java.util.List;

import org.junit.Before;
import org.junit.Test;

import sucursal.Sucursal;
import clientes.Cliente;

public class TestAvisoOfertas {

	public Oferta oferta;
	public AvisoOfertas avisoDeOfertas;
	public List<Cliente> listadoDeClientes;
	public Cliente cliente;
	public Sucursal sucursal;
	public OfertaProducto hojaOferta;

	@Before
	public void setUp() throws Exception {
		oferta = mock(Oferta.class);
		listadoDeClientes = new ArrayList<Cliente>();
		cliente = mock(Cliente.class);
		listadoDeClientes.add(cliente);
		sucursal = mock(Sucursal.class);

	}

	@Test
	public void testInstancioUnAvisadorDeOfertas() {
		avisoDeOfertas = new AvisoOfertas(oferta, sucursal);
		assertNotNull(avisoDeOfertas.oferta());
		assertNotNull(avisoDeOfertas.sucursal());
	}

	@Test
	public void testAvisoALosClientesSobreNuevaOferta() {
		hojaOferta = mock(OfertaProducto.class);
		oferta.agregarOferta(hojaOferta);
		avisoDeOfertas = new AvisoOfertas(oferta, sucursal);
		when(sucursal.clientes()).thenReturn(listadoDeClientes);
		avisoDeOfertas.avisarAClientes();
		verify(cliente, times(1)).avisoDeOferta();
	}

}
